import Mock from "mockjs"
import setupMock, { successResponseWrap } from "@/utils/setup-mock"

const haveReadIds: number[] = []
const getMessageList = () => {
  return [
    {
      id: 1,
      type: "message",
      title: "郑曦月",
      subTitle: "的私信",
      avatar:
        "//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/8361eeb82904210b4f55fab888fe8416.png~tplv-uwbnlip3yd-webp.webp",
      content: "审批请求已发送，请查收",
      time: "今天 12:30:01"
    },
    {
      id: 2,
      type: "message",
      title: "宁波",
      subTitle: "的回复",
      avatar:
        "//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
      content: "此处 bug 已经修复",
      time: "今天 12:30:01"
    },
    {
      id: 3,
      type: "message",
      title: "宁波",
      subTitle: "的回复",
      avatar:
        "//p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
      content: "此处 bug 已经修复",
      time: "今天 12:20:01"
    },
    {
      id: 4,
      type: "notice",
      title: "续费通知",
      subTitle: "",
      avatar: "",
      content: "您的产品使用期限即将截止，如需继续使用产品请前往购…",
      time: "今天 12:20:01",
      messageType: 3
    },
    {
      id: 5,
      type: "notice",
      title: "规则开通成功",
      subTitle: "",
      avatar: "",
      content: "内容屏蔽规则于 2021-12-01 开通成功并生效",
      time: "今天 12:20:01",
      messageType: 1
    },
    {
      id: 6,
      type: "todo",
      title: "质检队列变更",
      subTitle: "",
      avatar: "",
      content: "内容质检队列于 2021-12-01 19:50:23 进行变更，请重新…",
      time: "今天 12:20:01",
      messageType: 0
    }
  ].map((item) => ({
    ...item,
    status: haveReadIds.indexOf(item.id) === -1 ? 0 : 1
  }))
}

setupMock({
  setup: () => {
    Mock.mock(new RegExp("/api/message/list"), () => {
      return successResponseWrap(getMessageList())
    })

    Mock.mock(new RegExp("/api/message/read"), (params: { body: string }) => {
      const { ids } = JSON.parse(params.body)
      haveReadIds.push(...(ids || []))
      return successResponseWrap(true)
    })
  }
})
